Modern networks are comprised of heterogeneous network devices, the physical hardware connections between the network devices, and the software used to send, receive and switch/route data. The configuration of the communication network evolves as new devices and services are added, existing devices are re-located, and obsolete devices are removed.
It is known to provide the network with a network management system (NMS) for monitoring operational behavior of the network as a whole and controlling the operation of the individual network devices and the traffic flow. The monitoring objective is achieved by collecting device specification data, device connectivity data, information about the capacity and relative utilization of communications links among the devices, the extent and locations of faults or problems in the network such as traffic congestion and data loss, etc. The NMS assembles this data in a master database that provides a centralized view of the network.
On the control side, network management systems are utilized to configure the network devices in accordance with a plan of network operation, and to operate the network devices by correlating the events and conditions that span network elements and sub-networks.
Inspired by the technological and architectural advances in data communication and the need to develop and deploy highly scalable new services in a rapid and cost-effective manner, network management systems are rapidly evolving toward highly distributed, multi-vendor systems, with open interfaces, and applications that are independent from the underlying transport technologies. The modern network managers maintain in the master database a complete and up-to-date representation of the network and the technologies involved, and are equipped with advanced user-network interface, such as a GUI (graphical user interface), that enable a user to view this information and to interact with the network.
For network management systems to be effective, it is important that they maintain accurate information regarding the operation of the managed devices. In general, if the NMS has been used to configure a network device, it infers that the device's operational configuration is that resulted from the stream of configuration commands sent to the device from the network management system. To achieve this, the device acknowledges to the NMS if any change has been in fact implemented in order to ensure that device information in the node database and in the network management database is accurate and synchronized.
As a result, a major challenge for the NMS is the high volume of messages and the requirement to process the messages in sequence. It is also common today for a network management system to support large networks with over 1,000 nodes (such as e.g. Telemar, SBC, Telus, etc). As the network grows by aggregating sub-networks of different technologies and configurations, and as the network devices evolve to perform more complex tasks, the load on network management systems to process network change notifications and reflect these changes in the master database and node databases increases accordingly. It is critical that database changes be processed in the order in which they are received because otherwise the NMS database would not accurately reflect the condition of the network nodes and consequently the NMS would lose its ability to manage the network.
There is a growing need to provide solutions to improve event processing performance required by message/event processing applications, to enable the NMS to dynamically respond to changing load conditions for providing optimal performance and processing capabilities usage tradeoff.
The current event processing systems perform sequential processing of events and/or messages. For example, U.S. Pat. No. 6,493,756 (O'Brien et al.) “System and method for dynamically sensing an asynchronous network event within a modular framework for network event processing”, issued on Dec. 10, 2002 and assigned to Networks Associates, Inc. describes a single-threaded architecture whereby a queue of network events is processed sequentially. Network event messages are received by a listener thread and placed in a holding structure. Each received message is removed from the holding structure via a handler thread. An action set mapping corresponding to each received message is retrieved for a generator process, which creates an action set. The generated action set is placed into an event queue for processing, which is done sequentially by invoking a process method on each set.
There is also a current trend towards multi-threaded (parallel) message processing architectures in an attempt to meet the high volume processing requirements. However, while parallel processing addresses well the requirement of processing a high volume of messages, it does not lend itself easily to processing the messages in sequence. Since message sequencing at the node level must be maintained, which is the characterizing queuing feature of any message processing architecture, workarounds are few, and not satisfactory.